home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 February
/
EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso
/
earcd
/
comm2
/
termsorc.lha
/
Extras
/
Source
/
term-source.lha
/
termData.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-09-26
|
51KB
|
1,731 lines
/*
** termData.c
**
** Global data structures.
**
** Copyright © 1990-1995 by Olaf `Olsen' Barthel
** All Rights Reserved
*/
#include "termGlobal.h"
BOOLEAN DebugFlag;
/* Libraries. */
struct ExecBase *SysBase;
struct DosLibrary *DOSBase;
struct Library *GTLayoutBase;
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct RxsLib *RexxSysBase;
struct LocaleBase *LocaleBase;
struct Library *GadToolsBase,
*TimerBase,
*ConsoleDevice,
*DiskfontBase,
*UtilityBase,
*AslBase,
*IFFParseBase,
*CxBase,
*IconBase,
*LayersBase,
*TranslatorBase,
*WorkbenchBase,
*AmigaGuideBase,
*XEmulatorBase,
*XProtocolBase,
*DataTypesBase,
*OwnDevUnitBase;
BYTE Kick30;
/* Timer device. */
struct timerequest *TimeRequest;
struct MsgPort *TimePort;
/* Console device. */
struct IOStdReq *ConsoleRequest;
struct KeyMap *KeyMap;
BPTR KeySegment;
/* Screen & Windows. */
struct Screen *Screen,
*DefaultPubScreen,
*SharedScreen;
struct Window *Window;
LONG WindowWidth,
WindowHeight,
WindowLeft,
WindowTop;
struct Window *StatusWindow;
struct Gadget *StatusGadget;
UWORD StatusOffset;
struct RastPort StatusRastPort,
*StatusRPort;
UWORD StatusDisplayLeft,
StatusDisplayTop,
StatusDisplayWidth,
StatusDisplayHeight;
APTR OldWindowPtr;
UBYTE __far ScreenTitle[80];
UBYTE DepthMask;
LONG RenderPens[4],
MappedPens[2][32],
SafeTextPen;
struct DrawInfo *DrawInfo;
LONG ScreenWidth,
ScreenHeight;
BYTE UseMasking;
struct IBox WindowBox = { -1,-1,-1,-1 };
struct BlockMarker *WindowMarker;
ULONG ClickSecs,ClickMicros;
BYTE FirstClick = TRUE,HoldClick = FALSE;
LONG ClickX,ClickY;
/* Workbench AppWindow support. */
struct AppWindow *WorkbenchWindow;
struct MsgPort *WorkbenchPort;
/* Graphics rendering. */
struct ViewPort *VPort;
struct RastPort *RPort;
struct Region *ClipRegion,
*OldRegion;
struct TextFont *GFX,
*CurrentFont,
*UserTextFont;
WORD UserFontHeight,
UserFontWidth,
UserFontBase;
UBYTE __far UserFontName[40];
struct TextFont *TextFont;
WORD TextFontHeight,
TextFontWidth,
TextFontBase;
struct TTextAttr TextAttr;
UBYTE __far TextFontName[40];
struct TTextAttr UserFont;
struct TagItem TagDPI[2];
APTR VisualInfo;
UWORD FontRightExtend;
ULONG (* ReadAPen)(struct RastPort *RPort);
ULONG (* ReadBPen)(struct RastPort *RPort);
ULONG (* ReadDrMd)(struct RastPort *RPort);
ULONG (* SetMask)(struct RastPort *RPort,ULONG Mask);
UWORD MonoPens[] =
{
0,1,1,1,1,1,0,0,1, 0,1,1,(UWORD)~0
};
UWORD StandardPens[] =
{
0,1,1,2,1,3,1,0,2, 1,2,1,(UWORD)~0
};
UWORD ANSIPens[] =
{
0,4,7,7,4,6,7,0,6, 0,7,0,(UWORD)~0
};
UWORD EGAPens[] =
{
0,15,15,15,8,7,15,0,7, 0,15,0,(UWORD)~0
};
UWORD NewEGAPens[] =
{
7,0,0,15,0,6,0,7,15, 0,15,0,(UWORD)~0
};
UWORD AtomicColours[16] =
{
0x000,
0xDDD,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000
};
UWORD EGAColours[16] =
{
0x000, /* Black. */
0xA00, /* Dark red. */
0x0A0, /* Dark green. */
0xA60, /* Dark yellow (orange). */
0x00A, /* Dark blue. */
0xA0A, /* Dark magenta.*/
0x0AA, /* Dark cyan. */
0xBBB, /* Light grey. */
0x666, /* Dark grey. */
0xF00, /* Red. */
0x0F0, /* Green. */
0xFF0, /* Yellow. */
0x00F, /* Blue. */
0xF0F, /* Magenta. */
0x0FF, /* Cyan. */
0xFFF /* White. */
};
UWORD ANSIColours[16] =
{
0x000, /* Black. */
0xF00, /* Red. */
0x0F0, /* Green. */
0xFF0, /* Yellow. */
0x00F, /* Blue. */
0xF0F, /* Magenta. */
0x0FF, /* Cyan. */
0xFFF, /* White. */
0x000, /* Black. */
0xF00, /* Red. */
0x0F0, /* Green. */
0xFF0, /* Yellow. */
0x00F, /* Blue. */
0xF0F, /* Magenta. */
0x0FF, /* Cyan. */
0xFFF /* White. */
};
UWORD DefaultColours[32],
BlinkColours[32],
NormalColours[32],
StandardColours[32],
PaletteSize = 16;
/* Line/Column offset tables. */
LONG *OffsetXTable,
*OffsetYTable;
/* DOS data. */
struct Process *ThisProcess;
struct Process *StatusProcess;
struct Process *RexxProcess;
struct MsgPort *TermRexxPort;
struct WBStartup *WBenchMsg;
BPTR WBenchLock;
struct TermPort *TermPort;
BYTE CheckBit = -1,
OwnDevBit = -1;
BYTE InRexx;
WORD LimitCount = -1;
UBYTE __far LimitMacro[MAX_FILENAME_LENGTH];
LONG CantQuit;
/* Character conversion. */
struct InputEvent *FakeInputEvent;
/* Serial I/O. */
struct IOExtSer *ReadRequest;
struct IOExtSer *WriteRequest;
struct MsgPort *ReadPort;
UBYTE *ReadBuffer,
*HostReadBuffer;
UBYTE *SerialMessage;
ULONG DTERate,
SerialBufferSize;
BYTE ProcessIO = TRUE;
BYTE FirstInvocation;
BYTE UseRTS_CTS;
UBYTE __far NewDevice[MAX_FILENAME_LENGTH];
LONG NewUnit;
BYTE UseNewDevice,
UseNewUnit;
LONG BaudRates[] =
{
110, 300, 600, 1200, 2400, 4800, 7200,
9600, 12000, 14400, 19200, 31250, 38400, 57600,
64000, 76800, 115200, 230400, 345600, 460800, 576000,
614400, 691200, 806400, 921600
};
LONG NumBaudRates = sizeof(BaudRates) / sizeof(LONG);
struct RendezvousSemaphore RendezvousSemaphore;
/* Localization support. */
struct Catalog *Catalog;
struct Locale *Locale;
/* Hotkeys. */
struct Hotkeys Hotkeys;
struct NewBroker NewTermBroker =
{
NB_VERSION,
"term",
"term © 1990-1994 by Olaf Barthel",
"Terminal program",
0,0,0,NULL,0
};
/* Static default fonts. */
struct TextAttr DefaultFont =
{
(UBYTE *)"topaz.font",
8,
FS_NORMAL,
FPF_ROMFONT | FPF_DESIGNED
};
struct TextAttr GFXFont =
{
(UBYTE *)"GFX.font",
8,
FS_NORMAL,
FPF_DISKFONT
};
/* Character lookup tables. */
BYTE IsPrintable[256] =
{
0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,
0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
};
BYTE IsGlyph[256] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
};
BYTE CharType[256] =
{
0,0,0,0,0,0,0,0,0,0,6,0,0,7,0,0,
0,5,0,4,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
0,0,0,0,0,3,1,1,1,1,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
/* ISO -> IBM font conversion. */
UBYTE __far IBMConversion[256] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x00,0x00,
0x00,0x11,0x00,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x00,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xAD,0x9B,0x9C,0x00,0x9D,0x00,0x15,0x00,0x00,0xA6,0x00,0x00,0x00,0xAE,0x00,
0xF8,0xF1,0xFD,0x00,0x00,0xE6,0x14,0xF9,0x00,0x00,0xA7,0xAF,0xAC,0xAB,0x00,0xA8,
0x00,0x00,0x00,0x00,0x8E,0x8F,0x92,0x80,0x00,0x90,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xA5,0x00,0x00,0x00,0x00,0x99,0x00,0x00,0x00,0x00,0x00,0x9A,0x00,0x00,0xE1,
0x85,0xA0,0x83,0x00,0x84,0x86,0x91,0x87,0x8A,0x82,0x88,0x89,0x8D,0xA1,0x8C,0x00,
0x00,0xA4,0x95,0xA2,0x93,0x00,0x94,0x00,0x00,0x97,0xA3,0x96,0x81,0x00,0x00,0x98
};
/* IBM -> ISO font conversion. */
UBYTE __far ISOConversion[256] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x00,0x00,
0x00,0x11,0x00,0x13,0xB6,0xA7,0x00,0x00,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x00,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
0xC7,0xFC,0xE9,0xE2,0xE4,0xE0,0xE5,0xE7,0xEA,0xEB,0xE8,0x00,0xEE,0xEC,0xC4,0xC5,
0xC9,0xE6,0xC6,0xF4,0xF6,0xF2,0xFB,0xF9,0xFF,0xD6,0xDC,0xA2,0xA3,0xA5,0x00,0x00,
0xE1,0xED,0xF3,0xFA,0xF1,0xD1,0xAA,0xBA,0xBF,0x00,0x00,0xBD,0xBC,0xA1,0xAE,0xBB,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xDF,0x00,0x00,0x00,0x00,0xB5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xB1,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xB7,0x00,0x00,0x00,0xB2,0x00,0x00
};
/* Table of graphics characters. */
BYTE GfxTable[256] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
/* Special character treatment. */
struct SpecialKey SpecialKeys[13] =
{
BEL, DoBeep, /* Ring the bell. */
XON, DoxON, /* Flow control - stop output. */
BKS, DoBackspace, /* Erase a character. */
ENT, DoLF_FF_VT, /* Enter key. */
FFD, DoFF, /* Form feed. */
VTB, DoLF_FF_VT, /* Vertical tab (huh?). */
RET, DoCR, /* Return key. */
TAB, DoTab, /* Move to next tab stop. */
SI, DoShiftIn, /* Change to graphics mode */
SO, DoShiftOut, /* Change out of graphics mode. */
ENQ, DoEnq, /* Transmit answerback message. */
ESC, DoEsc, /* Start new control sequence. */
CSI, DoCsi /* Start new control sequence. */
};
JUMP *SpecialTable;
BYTE AbortMap[256] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,0,1,2,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
JUMP *AbortTable;
VOID (* ConDump)(STRPTR,LONG);
VOID (* ConOutput)(STRPTR,LONG);
VOID (* ConProcessData)(register STRPTR,register LONG);
/* Shared global string formatting buffer. */
UBYTE __far SharedBuffer[512];
/* Some more handy buffers. */
UBYTE __far ARexxCommandBuffer[256],AmigaDOSCommandBuffer[256],DialNumberBuffer[256];
/* Screen pull-down-menu. */
struct NewMenu TermMenu[] =
{
{ NM_TITLE, NULL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)0},
{ NM_SUB, NULL, 0 , 0, 0, (APTR)MEN_SAVE_AS_PICTURE},
{ NM_SUB, NULL, 0 , 0, 0, (APTR)MEN_SAVE_AS_TEXT},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)0},
{ NM_SUB, NULL, 0 , 0, 0, (APTR)MEN_PRINT_SCREEN},
{ NM_SUB, NULL, 0 , 0, 0, (APTR)MEN_PRINT_SCREEN_AS_GFX},
{ NM_SUB, NULL, 0 , 0, 0, (APTR)MEN_PRINT_CLIP},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)0},
{ NM_SUB, NULL, 0 , TICK, 0, (APTR)MEN_CAPTURE_TO_FILE},
{ NM_SUB, NULL, 0 , TICK, 0, (APTR)MEN_CAPTURE_TO_RAW_FILE},
{ NM_SUB, NULL, 0 , TICK, 0, (APTR)MEN_CAPTURE_TO_PRINTER},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_ICONIFY},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_ABOUT},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_QUIT},
{ NM_TITLE, NULL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_COPY},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_PASTE},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_CLEAR},
{ NM_TITLE, NULL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_EXECUTE_DOS_COMMAND},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_EXECUTE_REXX_COMMAND},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , TICK, 0, (APTR)MEN_RECORD},
{ NM_ITEM, NULL, 0 , TICK, 0, (APTR)MEN_RECORD_LINE},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_EDIT_TRAPS},
{ NM_ITEM, NULL, 0 , TICK, 0, (APTR)MEN_DISABLE_TRAPS},
{ NM_TITLE, NULL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_PHONEBOOK},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_REDIAL},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_DIAL_NUMBER},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_SEND_BREAK},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_HANG_UP},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_WAIT},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_FLUSH_BUFFER},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_RELEASE_DEVICE},
{ NM_TITLE, NULL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_UPLOAD_ASCII},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_DOWNLOAD_ASCII},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_UPLOAD_TEXT},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_DOWNLOAD_TEXT},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_EDIT_AND_UPLOAD_TEXT},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_UPLOAD_BINARY},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_DOWNLOAD_BINARY},
{ NM_TITLE, NULL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_CLEAR_BUFFER},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_DISPLAY_BUFFER},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_CLOSE_BUFFER},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , TICK, 0, (APTR)MEN_FREEZE_BUFFER},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_OPEN_BUFFER},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_SAVE_BUFFER_AS},
{ NM_TITLE, NULL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_CLEAR_SCREEN},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_RESET_FONT},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_RESET_STYLES},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_RESET_TERMINAL},
{ NM_TITLE, NULL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_SERIAL},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_MODEM},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_SCREEN},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_TERMINAL},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_SET_EMULATION},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_CLIPBOARD},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_CAPTURE},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_COMMANDS},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_MISC},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_PATH},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_TRANSFER_PROTOCOL},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_TRANSFER},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_TRANSLATION},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_MACROS},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_CURSORKEYS},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_FAST_MACROS},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_HOTKEYS},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_SPEECH},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_SOUND},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_RATES},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_SET_CONSOLE},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_OPEN_SETTINGS},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_SAVE_SETTINGS},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_SAVE_SETTINGS_AS},
{ NM_TITLE, NULL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, NULL, 0 , TICK, 0, (APTR)MEN_STATUS_WINDOW},
{ NM_ITEM, NULL, 0 , TICK, 0, (APTR)MEN_REVIEW_WINDOW},
{ NM_ITEM, NULL, 0 , CHECKIT, 0, (APTR)MEN_PACKET_WINDOW},
{ NM_ITEM, NULL, 0 , TICK, 0, (APTR)MEN_CHAT_LINE},
{ NM_ITEM, NULL, 0 , TICK, 0, (APTR)MEN_FAST_MACROS_WINDOW},
{ NM_ITEM, NULL, 0 , TICK, 0, (APTR)MEN_MATRIX_WINDOW},
{ NM_ITEM, NULL, 0 , 0, 0, (APTR)MEN_UPLOAD_QUEUE_WINDOW},
{ NM_TITLE, NULL, 0 , 0, 0, (APTR)MEN_EXTRA_DIAL},
{ NM_END, 0, 0 , 0, 0, (APTR)0}
};
LONG NumMenuEntries = sizeof(TermMenu) / sizeof(TermMenu[0]);
struct Menu *Menu;
struct Image *AmigaGlyph,
*CheckGlyph;
LONG MenuLabels[] =
{
MSG_TERMDATA_PROJECT_MEN,
MSG_TERMDATA_SAVE_SCREEN_AS_MEN,
MSG_TERMDATA_SAVE_AS_PICTURE_MEN,
MSG_TERMDATA_SAVE_AS_TEXT_MEN,
MSG_TERMDATA_PRINT_MEN,
MSG_TERMDATA_PRINT_SCREEN_MEN,
MSG_TERMDATA_PRINT_SCREEN_GFX_MEN,
MSG_TERMDATA_PRINT_CLIP_MEN,
MSG_TERMDATA_CAPTURE_MEN,
MSG_TERMDATA_CAPTURE_TO_FILE_MEN,
MSG_TERMDATA_CAPTURE_TO_RAW_FILE_MEN,
MSG_TERMDATA_CAPTURE_TO_PRINTER_MEN,
MSG_TERMDATA_ICONIFY_MEN,
MSG_TERMDATA_ABOUT_MEN,
MSG_TERMDATA_QUIT_MEN,
MSG_TERMDATA_EDIT_MEN,
MSG_TERMDATA_COPY_MEN,
MSG_TERMDATA_PASTE_MEN,
MSG_TERMDATA_CLEAR_MEN,
MSG_TERMDATA_COMMANDS_MEN,
MSG_TERMDATA_EXECUTE_DOS_COMMAND_MEN,
MSG_TERMDATA_EXECUTE_REXX_COMMAND_MEN,
MSG_TERMDATA_RECORD_MEN,
MSG_TERMDATA_RECORD_LINE_MEN,
MSG_TERMDATA_EDIT_TRAPS_MEN,
MSG_TERMDATA_DISABLE_TRAPS_MEN,
MSG_TERMDATA_PHONE_MEN,
MSG_TERMDATA_PHONEBOOK_MEN,
MSG_TERMDATA_REDIAL_MEN,
MSG_TERMDATA_DIAL_NUMBER_MEN,
MSG_TERMDATA_SEND_BREAK_MEN,
MSG_TERMDATA_HANG_UP_MEN,
MSG_TERMDATA_WAIT_MEN,
MSG_TERMDATA_FLUSH_BUFFER_MEN,
MSG_TERMDATA_RELEASE_DEVICE_MEN,
MSG_TERMDATA_XFER_MEN,
MSG_TERMDATA_UPLOAD_ASCII_MEN,
MSG_TERMDATA_DOWNLOAD_ASCII_MEN,
MSG_TERMDATA_UPLOAD_TEXT_MEN,
MSG_TERMDATA_DOWNLOAD_TEXT_MEN,
MSG_TERMDATA_EDIT_AND_UPLOAD_TEXT_MEN,
MSG_TERMDATA_UPLOAD_BINARY_MEN,
MSG_TERMDATA_DOWNLOAD_BINARY_MEN,
MSG_TERMDATA_BUFFER_MEN,
MSG_TERMDATA_CLEAR_BUFFER_MEN,
MSG_TERMDATA_DISPLAY_BUFFER_MEN,
MSG_TERMDATA_CLOSE_BUFFER_MEN,
MSG_TERMDATA_FREEZE_BUFFER_MEN,
MSG_TERMDATA_OPEN_BUFFER_MEN,
MSG_TERMDATA_SAVE_BUFFER_AS_MEN,
MSG_TERMDATA_SCREEN_MEN,
MSG_TERMDATA_CLEAR_SCREEN_MEN,
MSG_TERMDATA_RESET_FONT_MEN,
MSG_TERMDATA_RESET_STYLES_MEN,
MSG_TERMDATA_RESET_TERMINAL_MEN,
MSG_TERMDATA_SETTINGS_MEN,
MSG_TERMDATA_SERIAL_MEN,
MSG_TERMDATA_MODEM_MEN,
MSG_TERMDATA_SCREEN_PREFS_MEN,
MSG_TERMDATA_TERMINAL_MEN,
MSG_TERMDATA_SET_EMULATION_MEN,
MSG_TERMDATA_CLIPBOARD_PREFS_MEN,
MSG_TERMDATA_CAPTURE_PREFS_MEN,
MSG_TERMDATA_COMMANDS_PREFS_MEN,
MSG_TERMDATA_MISC_MEN,
MSG_TERMDATA_PATH_MEN,
MSG_TERMDATA_TRANSFER_PROTOCOL_MEN,
MSG_TERMDATA_TRANSFER_MEN,
MSG_TERMDATA_TRANSLATION_MEN,
MSG_TERMDATA_MACROS_MEN,
MSG_TERMDATA_CURSORKEYS_MEN,
MSG_TERMDATA_FAST_MACROS_MEN,
MSG_TERMDATA_HOTKEYS_MEN,
MSG_TERMDATA_SPEECH_MEN,
MSG_TERMDATA_SOUND_MEN,
MSG_AREACODES_MEN,
MSG_TERMDATA_SET_CONSOLE_MEN,
MSG_TERMDATA_OPEN_SETTINGS_MEN,
MSG_TERMDATA_SAVE_SETTINGS_MEN,
MSG_TERMDATA_SAVE_SETTINGS_AS_MEN,
MSG_TERMDATA_WINDOWS_MEN,
MSG_TERMDATA_STATUS_WINDOW_MEN,
MSG_TERMDATA_REVIEW_WINDOW_MEN,
MSG_TERMDATA_PACKET_WINDOW_MEN,
MSG_TERMDATA_CHAT_LINE_MEN,
MSG_TERMDATA_FAST_MACROS_WINDOW_MEN,
MSG_TERMDATA_MATRIX_WINDOW_MEN,
MSG_TERMDATA_UPLOAD_QUEUE_WINDOW_MEN,
MSG_TERMDATA_DIALING_MEN
};
/* Pointer. */
UWORD __chip Stopwatch[(1 + 16 + 1) * 2] =
{
0x0000,0x0000,
0x0400,0x07C0,
0x0000,0x07C0,
0x0100,0x0380,
0x0000,0x07E0,
0x07C0,0x1FF8,
0x1FF0,0x3FEC,
0x3FF8,0x7FDE,
0x3FF8,0x7FBE,
0x7FFC,0xFF7F,
0x7EFC,0xFFFF,
0x7FFC,0xFFFF,
0x3FF8,0x7FFE,
0x3FF8,0x7FFE,
0x1FF0,0x3FFC,
0x07C0,0x1FF8,
0x0000,0x07E0,
0x0000,0x0000
};
/* Cross-hatch pattern. */
ULONG __chip Crosshatch = 0x5555AAAA;
/* Ghosting pattern, slightly different from the cross-hatch pattern. */
ULONG __chip Ghosting = 0x44441111;
/* Configuration. */
struct Configuration *Config,
*PrivateConfig,
*BackupConfig;
struct SpeechConfig SpeechConfig;
BYTE English = TRUE;
BYTE Status;
BYTE Online,WasOnline;
ULONG OnlineMinutes,OnlinePlus;
UWORD PublicModes;
struct SignalSemaphore OnlineSemaphore;
UBYTE __far LastConfig[MAX_FILENAME_LENGTH];
UBYTE __far DefaultPubScreenName[MAXPUBSCREENNAME + 1],
SomePubScreenName[MAXPUBSCREENNAME + 1];
/* Capture file. */
struct Buffer *FileCapture;
BPTR PrinterCapture;
UBYTE __far CaptureName[MAX_FILENAME_LENGTH];
BYTE StandardPrinterCapture,
ControllerActive;
LONG BufferFlushCount;
VOID (* __regargs CaptureData)(register APTR Data,register LONG Size);
BOOL RawCapture;
/* Buffer. */
UBYTE **BufferLines;
LONG Lines;
struct SignalSemaphore *BufferSemaphore;
LONG MaxLines = 100;
LONG BufferSpace;
BYTE BufferClosed;
BYTE BufferFrozen;
struct MinList ReviewBufferHistory,
TextBufferHistory;
/* Sound support.c */
struct SoundConfig SoundConfig;
BYTE SoundChanged = FALSE;
/* Phonebook. */
struct PhoneEntry **Phonebook;
LONG PhoneSize;
LONG NumPhoneEntries;
struct MinList PhoneGroupList;
ULONG PhonebookID;
ULONG PhonebookDefaultGroup;
UBYTE __far PhonePassword[256];
BYTE PhonePasswordUsed,
PhonebookAutoDial,
PhonebookAutoExit,
RebuildMenu;
UBYTE __far Password[100];
UBYTE __far UserName[100];
UBYTE __far GlobalPassword[256];
UBYTE __far CurrentBBSName[40],
CurrentBBSNumber[100],
CurrentBBSComment[100];
UBYTE __far LastPhone[MAX_FILENAME_LENGTH];
UBYTE __far LastKeys[MAX_FILENAME_LENGTH];
UBYTE __far LastMacros[MAX_FILENAME_LENGTH];
UBYTE __far LastCursorKeys[MAX_FILENAME_LENGTH];
UBYTE __far LastTranslation[MAX_FILENAME_LENGTH];
UBYTE __far LastSpeech[MAX_FILENAME_LENGTH];
UBYTE __far LastSound[MAX_FILENAME_LENGTH];
struct MacroKeys *MacroKeys;
struct CursorKeys *CursorKeys;
/* Console stuff. */
UBYTE *StripBuffer;
UWORD LastLine,LastColumn,LastPixel;
UWORD LastPrintableColumn;
UWORD LastPrintablePixel;
UWORD CharCellNominator,CharCellDenominator;
UBYTE CurrentFontScale,FontScalingRequired,CurrentCharWidth;
UBYTE Charset,Attributes,FgPen,BgPen;
WORD CursorX,CursorY,Top,Bottom;
BYTE UseRegion,RegionSet,InSequence,Quiet,Blocking;
BYTE *TabStops;
UWORD TabStopMax;
BYTE CharMode[2];
BOOLEAN VT52_Mode;
BYTE ResetDisplay,
DisplayReopened,
FixPubScreenMode,
FixScreenSize,
Apocalypse;
struct SignalSemaphore TerminalSemaphore; // Protection from shape changers
/* Flow filter. */
STRPTR AttentionBuffers[SCAN_COUNT];
BYTE BaudPending,FullCheck,UseFlow;
UBYTE BaudBuffer[80],BaudCount;
struct FlowInfo FlowInfo;
STRPTR DataHold;
LONG DataSize;
/* Transfer data. */
BYTE BinaryTransfer;
LONG TransferAbortState;
WORD TransferAbortCount;
LONG TransferBits;
VOID (* ConTransfer)(STRPTR,LONG);
UBYTE *DownloadPath;
BYTE Uploading;
BYTE DidTransfer;
struct Window *TransferWindow,
*TransferPerfWindow;
UBYTE __far TransferTitleBuffer[256];
BOOLEAN TransferZoomed = FALSE;
STRPTR TransferWindowTitle;
struct LayoutHandle *TransferHandle;
struct Menu *TransferMenu;
struct Gadget *TransferGadgetArray[GAD_TRANSFER_SKIP + 1];
struct List TransferInfoList;
struct FileTransferInfo *FileTransferInfo;
struct XPR_IO *XprIO;
UBYTE __far ProtocolOptsBuffer[256];
BYTE NewLibrary,NewOptions;
BOOLEAN XPRCommandSelected;
UBYTE __far LastXprLibrary[MAX_FILENAME_LENGTH];
UBYTE __far TransferProtocolName[40];
UBYTE __far ConvNumber[30],ConvNumber10[30];
BYTE UsesZModem,SendAbort,TransferAborted,TransferFailed,TransferError;
struct Process *TransferProcess;
/* The standard ZModem cancel sequence
* (ten CAN chars followed by ten
* BS chars).
*/
UBYTE ZModemCancel[] =
{
24,24,24,24,24,24,24,24,24,24,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8
};
/* Pay per minute. */
LONG CurrentPay;
LONG PayPerUnit[2];
LONG SecPerUnit[2];
LONG WhichUnit;
struct PhoneEntry *ChosenEntry;
BYTE ChosenInUse;
struct List *PatternList,
*ChosenPattern;
UBYTE __far LastPattern[MAX_FILENAME_LENGTH];
BYTE PatternsChanged;
struct SignalSemaphore PatternSemaphore;
/* Execute a command/script. */
UBYTE __far WindowName[256];
ULONG BlockNestCount;
BYTE WeAreBlocking;
/* Dial list. */
struct List *DialList;
BYTE SendStartup;
LONG FirstDialMenu = -1;
struct RexxMsg *DialMsg;
/* TermMain data. */
BYTE ReleaseSerial;
BYTE ResetSerial;
BYTE MainTerminated,
IconTerminated = TRUE,
DoIconify = FALSE,
DoDial = DIAL_IGNORE,
KeepQuiet;
BYTE ConfigChanged,PhonebookChanged,TranslationChanged,
MacroChanged,CursorKeysChanged,FastMacrosChanged,
HotkeysChanged,SpeechChanged,BufferChanged;
/* Upload/Download paths. */
UBYTE __far LastDownload[MAX_FILENAME_LENGTH];
UBYTE __far LastUpload[MAX_FILENAME_LENGTH];
/* String gadget hooks. */
struct Window *CommandWindow;
struct Gadget *CommandGadget;
BYTE ClipInput,
ClipXerox,
ClipPrefix;
/* Text sending. */
UBYTE __far SendPrompt[256];
LONG SendPromptLen;
BYTE (* SendLine)(register STRPTR,register LONG);
/* Packet window. */
struct Window *PacketWindow;
struct Gadget *PacketGadgetArray[2];
struct Menu *PacketMenu;
struct Gadget *PacketGadgetList;
struct List PacketHistoryList;
/* Some more colour control flags. */
BYTE Initializing,LoadColours;
/* The character raster. */
UBYTE *Raster,*RasterAttr;
LONG RasterWidth,RasterHeight;
BYTE Marking;
struct SignalSemaphore *RasterSemaphore;
BYTE RasterEnabled = TRUE;
/* Generic lists. */
struct GenericList *GenericListTable[GLIST_COUNT];
/* File version test. */
ULONG VersionProps[2] =
{
ID_TERM,
ID_VERS
};
/* Window stack. */
struct Window *TopWindow;
struct Window *WindowStack[5];
WORD WindowStackPtr;
/* Global term ID. */
LONG TermID;
UBYTE __far TermIDString[MAXPUBSCREENNAME + 1];
UBYTE __far RexxPortName[256];
/* Fast! macros. */
struct List FastMacroList;
LONG FastMacroCount;
UBYTE __far LastFastMacros[MAX_FILENAME_LENGTH];
struct Window *FastWindow;
WORD FastWindowLeft = -1,
FastWindowTop = -1,
FastWindowHeight = -1;
/* Double-buffered file locking. */
struct List DoubleBufferList;
struct SignalSemaphore DoubleBufferSemaphore;
/* XEM interface. */
struct XEM_IO *XEM_IO;
ULONG XEM_Signal;
struct XEmulatorHostData XEM_HostData;
UBYTE *OptionTitle;
struct List XEM_MacroList;
struct XEmulatorMacroKey *XEM_MacroKeys;
UBYTE __far EmulationName[40];
struct List EmptyList;
/* Screen scrolling support. */
UWORD ScrollLineFirst,ScrollLineLast,
ScrollLineCount;
struct ScrollLineInfo *ScrollLines;
/* term review buffer. */
struct Window *ReviewWindow;
/* Background information. */
ULONG BytesIn,
BytesOut;
struct DateStamp SessionStart;
struct Window *InfoWindow;
/* Gadget support routines */
LONG InterWidth,
InterHeight;
/* Character translation. */
struct TranslationEntry **SendTable,
**ReceiveTable;
/* Window alignment information. */
struct WindowInfo WindowInfoTable[WINDOW_COUNT] =
{
WINDOW_PACKET, WC_ALIGNBELOW|WC_EXPANDWIDTH, 0,0,0,0,
WINDOW_STATUS, WC_ALIGNRIGHT, 0,0,0,0,
WINDOW_FILE, NULL, 0,0,0,0,
WINDOW_REVIEW, WC_ALIGNTOP|WC_EXPANDWIDTH, 0,0,0,0,
WINDOW_FAST, WC_ALIGNTOP|WC_ALIGNSIDE, 0,0,0,0,
WINDOW_FONT, NULL, 0,0,0,0,
WINDOW_SCREEN, NULL, 0,0,0,0,
WINDOW_PERF, NULL, 0,0,0,0,
WINDOW_MAIN, NULL, -1,-1,0,0
};
/* New user interface. */
struct Hook LocaleHook =
{
{NULL},
(HOOKFUNC)LocaleHookFunc
};
/* AmigaGuide hook. */
struct Hook GuideHook =
{
{NULL},
(HOOKFUNC)GuideSetupHook
};
/* Special queue management. */
struct MsgQueue *SpecialQueue;
/* Window and Screen backfill hook. */
struct Hook BackfillHook =
{
{NULL},
(HOOKFUNC)BackfillRoutine
};
struct BitMap BackfillBitMap;
ULONG BackfillTag;
/* Intercept data going through SerWrite. */
BOOLEAN (*SerWriteBypass)(STRPTR Buffer,LONG Size);
/* The incredibly shrinking file name. */
UBYTE __far ShrunkenName[MAX_FILENAME_LENGTH],
OriginalName[MAX_FILENAME_LENGTH];
/* Terminal emulation task. */
struct MsgQueue *TerminalQueue;
/* DNet/ParaBIT support. */
/*
struct DChannel *NetChannel;
struct MsgPort *NetListen;
ULONG NetSigMask;
BOOLEAN NetTerminated;
*/
/* AppIcon data. */
STATIC UWORD DropData[304] =
{
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x2000,0x1000,0x0000,0x0000,0xF000,0x1000,
0x0000,0x0001,0x9800,0x1000,0x0000,0x0003,0x1C3E,0x1000,
0x0000,0x0003,0xFC30,0x1000,0x0000,0x0000,0x01FF,0x1000,
0x0000,0x0000,0x01FC,0x1000,0x0000,0x0060,0x0000,0x1000,
0x0000,0x001F,0xFFFF,0xF000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0700,0x0000,
0x07FF,0xFFFE,0x0700,0x0000,0x07FF,0xFFEE,0x0700,0x0000,
0x0755,0x555E,0x0700,0x0000,0x07AA,0xAAAE,0x1FC0,0x0000,
0x0755,0x555E,0x0F80,0x0000,0x07AA,0xAAAE,0x0700,0x0000,
0x0755,0x555E,0x0200,0x0000,0x07AA,0xAAAE,0x0000,0x0000,
0x0755,0x555E,0x0000,0x0000,0x07FF,0xFFFE,0x0000,0x0000,
0x07FF,0xFFFE,0x0000,0x0000,0x07FF,0xFFFC,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x7FFF,0xFFFF,0xE000,0x0000,
0x7FFF,0xFEFF,0xE000,0x0000,0x7FFF,0xFEF0,0x0000,0x0000,
0x7FE5,0x54E7,0xFF80,0x0000,0x7FFF,0xFF8E,0x0FC0,0x0000,
0x7FFF,0xFFBD,0xFCF0,0x0000,0x0FFF,0xFFFF,0xFEE0,0x0000,
0x0FFF,0xFFFB,0xD700,0x0000,0x0000,0x0007,0xAF80,0x0000,
0x0000,0x000F,0xFF80,0x0000,0x0000,0x0007,0xFF00,0x0000,
0x0000,0x007F,0xFFFE,0x0000,0x0000,0x007F,0xFFFF,0x8000,
0x0000,0x0060,0x20FF,0xE000,0x0000,0x0060,0xF0FF,0xE000,
0x0000,0x0061,0x98FF,0xE000,0x0000,0x0063,0x1CBF,0xE000,
0x0000,0x0063,0xFCB7,0xE000,0x0000,0x007F,0xFDFF,0xE000,
0x0000,0x007F,0xFDFF,0xE000,0x0000,0x007F,0xFFFF,0xE000,
0x0000,0x001F,0xFFFF,0xE000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x07FF,0xFFFC,0x0000,0x0000,
0x0FFF,0xFFFC,0x0000,0x0000,0x0EAA,0xAABC,0x0000,0x0000,
0x0F55,0x555C,0x0000,0x0000,0x0EAA,0xAABC,0x0000,0x0000,
0x0F55,0x555C,0x0000,0x0000,0x0EAA,0xAABC,0x0000,0x0000,
0x0F55,0x555C,0x0000,0x0000,0x0EAA,0xAABC,0x0000,0x0000,
0x0FFF,0xFFFC,0x0000,0x0000,0x0FFF,0xFFFC,0x0000,0x0000,
0x0FFF,0xFFFC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x7FFF,0xFFFF,0xC000,0x0000,0xFFFF,0xFFFF,0xC000,0x0000,
0xFFEA,0xABFF,0xC000,0x0000,0xFFE0,0x03FF,0xFF00,0x0000,
0xFFFF,0xFFFF,0xFFC0,0x0000,0xFFFF,0xFFFF,0xF9E0,0x0000,
0x0000,0x007F,0xFDE0,0x0000,0x1FFF,0xFFC7,0xAF00,0x0000,
0x0000,0x0007,0x5F00,0x0000,0x0000,0x000F,0xFF80,0x0000,
0x0000,0x001F,0xFF00,0x0000,0x0000,0x0000,0x0000,0x0000
};
STATIC struct Image DropImage =
{
0,0,
52,38,2,
DropData,
0x03,0x00,
NULL
};
struct DiskObject DropIcon =
{
WB_DISKMAGIC,
WB_DISKVERSION,
NULL,
175,18,
52,39,
0x0005,
0x0003,
0x0001,
&DropImage,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
WBTOOL,
NULL,
NULL,
NO_ICON_POSITION,
NO_ICON_POSITION,
NULL,
NULL,
8192
};
/* Remember some of the incoming data. */
BOOL RememberOutput,
RememberInput,
Recording,
RecordingLine;
/* Trap settings. */
BOOLEAN WatchTraps;
BOOLEAN TrapsChanged;
UBYTE LastTraps[MAX_FILENAME_LENGTH];
/* CR/LF receiver translation data. */
LONG (* __regargs Translate_CR_LF)(register STRPTR Data,register LONG Size);
/* End of line conversion labels. */
STRPTR EOL_Labels[] =
{
"-",
"«CR»",
"«LF»",
"«CR»«LF»",
"«LF»«CR»",
NULL
};
/**********************************************************************/
/* Character access tables. */
STATIC UBYTE __far Table0[256] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
STATIC UBYTE __far Table1[256] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
STATIC UBYTE __far Table2[256] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
STATIC UBYTE __far Table3[256] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
STATIC UBYTE __far Table4[256] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
STATIC UBYTE __far Table5[256] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
STATIC UBYTE __far Table6[256] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
STATIC UBYTE __far Table7[256] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
STATIC UBYTE __far Table8[256] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
STATIC UBYTE __far Term0[256] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
/* This follows the control code information. */
struct ControlCode ANSICode[] =
{
/* Single character sequences */
'A', Table0, NULL, 0 , 1, (EPTR)VT52_CursorUp, // Cursor up
'B', Table0, NULL, 0 , 1, (EPTR)VT52_CursorDown, // Cursor down
'C', Table0, NULL, 0 , 1, (EPTR)VT52_CursorRight, // Cursor right
'D', Table0, NULL, 0 , 1, (EPTR)VT52_CursorLeft, // Cursor left
'F', Table0, NULL, 0 , 1, (EPTR)Ignore, // Enter graphics mode
'G', Table0, NULL, 0 , 1, (EPTR)Ignore, // Exit graphics mode
'H', Table0, NULL, 0 , 1, (EPTR)VT52_CursorHome, // Cursor to home
'I', Table0, NULL, 0 , 1, (EPTR)VT52_RevLF, // Reverse line feed
'J', Table0, NULL, 0 , 1, (EPTR)VT52_EraseEOS, // Erase to end of screen
'K', Table0, NULL, 0 , 1, (EPTR)VT52_EraseEOL, // Erase to end of line
'W', Table0, NULL, 0 , 1, (EPTR)VT52_PrintOn, // Enter printer controller mode
'X', Table0, NULL, 0 , 1, (EPTR)VT52_PrintOff, // Exit printer controller mode
']', Table0, NULL, 0 , 1, (EPTR)VT52_PrintScreen, // Print screen
'V', Table0, NULL, 0 , 1, (EPTR)VT52_PrintLine, // Print cursor line
'^', Table0, NULL, 0 , 1, (EPTR)Ignore, // Enter auto print mode
'_', Table0, NULL, 0 , 1, (EPTR)Ignore, // Exit auto print mode
// 'D', Table0, NULL, 0 , 1, (EPTR)CursorScrollDown, // IND
'M', Table0, NULL, 0 , 1, (EPTR)CursorScrollUp, // RI
'E', Table0, NULL, 0 , 1, (EPTR)NextLine, // NEL
'7', Table0, NULL, 0 , 1, (EPTR)SaveCursor, // DECSC
'8', Table0, NULL, 0 , 1, (EPTR)LoadCursor, // DECRC
'=', Table0, NULL, 0 , 1, (EPTR)NumericAppMode, // DECPAM
'>', Table0, NULL, 0 , 1, (EPTR)NumericAppMode, // DECPNM
'N', Table0, NULL, 0 , 1, (EPTR)Ignore, // SS2
'O', Table0, NULL, 0 , 1, (EPTR)Ignore, // SS3
// 'H', Table0, NULL, 0 , 1, (EPTR)SetTab, // HTS
'P', Table0, NULL, 0 , 1, (EPTR)Ignore, // DCS
'/', Table0, NULL, 0 , 1, (EPTR)Ignore, // ST
'Z', Table0, NULL, 0 , 1, (EPTR)RequestTerminal, // DECID
'c', Table0, NULL, 0 , 1, (EPTR)Reset, // RIS
'<', Table0, NULL, 0 , 1, (EPTR)VT52_EnterANSI, // VT52 "Enter ANSI mode"
'~', Table0, NULL, 0 , 1, (EPTR)Ignore, // LS1R
'n', Table0, NULL, 0 , 1, (EPTR)Ignore, // LS2
0x7D, Table0, NULL, 0 , 1, (EPTR)Ignore, // LS2R
'o', Table0, NULL, 0 , 1, (EPTR)Ignore, // LS3
'|', Table0, NULL, 0 , 1, (EPTR)Ignore, // LS3R
/* Double character sequences */
'[', Table0, NULL, 's', 2, (EPTR)SaveCursor,
'[', Table0, NULL, 'u', 2, (EPTR)LoadCursor,
'(', Table0, NULL, 'A', 2, (EPTR)FontStuff, // SCS
'(', Table0, NULL, 'B', 2, (EPTR)FontStuff, // ASCII font
'(', Table0, NULL, '0', 2, (EPTR)FontStuff, // DEC special graphics font
'(', Table0, NULL, '<', 2, (EPTR)Ignore, // DEC supplemental font
'(', Table0, NULL, '4', 2, (EPTR)Ignore, // Dutch font
'(', Table0, NULL, '5', 2, (EPTR)Ignore, // Finnish font
'(', Table0, NULL, 'C', 2, (EPTR)Ignore, // Finnish font
'(', Table0, NULL, 'R', 2, (EPTR)Ignore, // French font
'(', Table0, NULL, 'Q', 2, (EPTR)Ignore, // French Canadian font
'(', Table0, NULL, 'K', 2, (EPTR)Ignore, // German font
'(', Table0, NULL, 'Y', 2, (EPTR)Ignore, // Italian font
'(', Table0, NULL, '6', 2, (EPTR)Ignore, // Norwegian/Danish font
'(', Table0, NULL, 'E', 2, (EPTR)Ignore, // Norwegian/Danish font
'(', Table0, NULL, 'Z', 2, (EPTR)Ignore, // Spanish font
'(', Table0, NULL, '7', 2, (EPTR)Ignore, // Swedish font
'(', Table0, NULL, 'H', 2, (EPTR)Ignore, // Swedish font
'(', Table0, NULL, '=', 2, (EPTR)Ignore, // Swiss font
')', Table0, NULL, 'A', 2, (EPTR)FontStuff, // SCS
')', Table0, NULL, 'B', 2, (EPTR)FontStuff, // ASCII font
')', Table0, NULL, '0', 2, (EPTR)FontStuff, // DEC special graphics font
')', Table0, NULL, '<', 2, (EPTR)Ignore, // DEC supplemental font
')', Table0, NULL, '4', 2, (EPTR)Ignore, // Dutch font
')', Table0, NULL, '5', 2, (EPTR)Ignore, // Finnish font
')', Table0, NULL, 'C', 2, (EPTR)Ignore, // Finnish font
')', Table0, NULL, 'R', 2, (EPTR)Ignore, // French font
')', Table0, NULL, 'Q', 2, (EPTR)Ignore, // French Canadian font
')', Table0, NULL, 'K', 2, (EPTR)Ignore, // German font
')', Table0, NULL, 'Y', 2, (EPTR)Ignore, // Italian font
')', Table0, NULL, '6', 2, (EPTR)Ignore, // Norwegian/Danish font
')', Table0, NULL, 'E', 2, (EPTR)Ignore, // Norwegian/Danish font
')', Table0, NULL, 'Z', 2, (EPTR)Ignore, // Spanish font
')', Table0, NULL, '7', 2, (EPTR)Ignore, // Swedish font
')', Table0, NULL, 'H', 2, (EPTR)Ignore, // Swedish font
')', Table0, NULL, '=', 2, (EPTR)Ignore, // Swiss font
'+', Table0, NULL, 'A', 2, (EPTR)Ignore, // British font
'+', Table0, NULL, 'B', 2, (EPTR)Ignore, // ASCII font
'+', Table0, NULL, '0', 2, (EPTR)Ignore, // DEC special graphics font
'+', Table0, NULL, '<', 2, (EPTR)Ignore, // DEC supplemental font
'+', Table0, NULL, '4', 2, (EPTR)Ignore, // Dutch font
'+', Table0, NULL, '5', 2, (EPTR)Ignore, // Finnish font
'+', Table0, NULL, 'C', 2, (EPTR)Ignore, // Finnish font
'+', Table0, NULL, 'R', 2, (EPTR)Ignore, // French font
'+', Table0, NULL, 'Q', 2, (EPTR)Ignore, // French Canadian font
'+', Table0, NULL, 'K', 2, (EPTR)Ignore, // German font
'+', Table0, NULL, 'Y', 2, (EPTR)Ignore, // Italian font
'+', Table0, NULL, '6', 2, (EPTR)Ignore, // Norwegian/Danish font
'+', Table0, NULL, 'E', 2, (EPTR)Ignore, // Norwegian/Danish font
'+', Table0, NULL, 'Z', 2, (EPTR)Ignore, // Spanish font
'+', Table0, NULL, '7', 2, (EPTR)Ignore, // Swedish font
'+', Table0, NULL, 'H', 2, (EPTR)Ignore, // Swedish font
'+', Table0, NULL, '=', 2, (EPTR)Ignore, // Swiss font
'*', Table0, NULL, 'A', 2, (EPTR)Ignore, // British font
'*', Table0, NULL, 'B', 2, (EPTR)Ignore, // ASCII font
'*', Table0, NULL, '0', 2, (EPTR)Ignore, // DEC special graphics font
'*', Table0, NULL, '<', 2, (EPTR)Ignore, // DEC supplemental font
'*', Table0, NULL, '4', 2, (EPTR)Ignore, // Dutch font
'*', Table0, NULL, '5', 2, (EPTR)Ignore, // Finnish font
'*', Table0, NULL, 'C', 2, (EPTR)Ignore, // Finnish font
'*', Table0, NULL, 'R', 2, (EPTR)Ignore, // French font
'*', Table0, NULL, 'Q', 2, (EPTR)Ignore, // French Canadian font
'*', Table0, NULL, 'K', 2, (EPTR)Ignore, // German font
'*', Table0, NULL, 'Y', 2, (EPTR)Ignore, // Italian font
'*', Table0, NULL, '6', 2, (EPTR)Ignore, // Norwegian/Danish font
'*', Table0, NULL, 'E', 2, (EPTR)Ignore, // Norwegian/Danish font
'*', Table0, NULL, 'Z', 2, (EPTR)Ignore, // Spanish font
'*', Table0, NULL, '7', 2, (EPTR)Ignore, // Swedish font
'*', Table0, NULL, 'H', 2, (EPTR)Ignore, // Swedish font
'*', Table0, NULL, '=', 2, (EPTR)Ignore, // Swiss font
'#', Table0, NULL, '3', 2, (EPTR)ScaleFont, // DECHDL (top half)
'#', Table0, NULL, '4', 2, (EPTR)ScaleFont, // DECHDL (bottom half)
'#', Table0, NULL, '5', 2, (EPTR)ScaleFont, // DECSWL
'#', Table0, NULL, '6', 2, (EPTR)ScaleFont, // DECDWL
'#', Table0, NULL, '8', 2, (EPTR)AlignmentTest, // DECALN
' ', Table0, NULL, 'F', 2, (EPTR)Ignore, // S7C1T
' ', Table0, NULL, 'G', 2, (EPTR)Ignore, // C8C1T
/* Three character sequence */
'Y', Table7, NULL, 0 , 3, (EPTR)VT52_SetCursor, // Direct cursor address
/* Multiple character sequences */
'(', Table6, Term0, 'D', 0, (EPTR)Ignore, // SCS
'[', Table3, NULL, 'i', 0, (EPTR)PrinterController, // Print mode
'[', Table3, NULL, 'n', 0, (EPTR)RequestInformation, // DSR
'[', Table3, NULL, 'c', 0, (EPTR)RequestTerminal, // DA
'[', Table3, NULL, 'h', 0, (EPTR)SetSomething, // Terminal modes
'[', Table3, NULL, 'l', 0, (EPTR)SetSomething, // Terminal modes
'[', Table4, NULL, 'h', 0, (EPTR)Ignore,
'[', Table5, NULL, 'p', 0, (EPTR)Ignore, // DECSCL
'[', Table1, NULL, 'A', 0, (EPTR)MoveCursor, // CUU
'[', Table1, NULL, 'B', 0, (EPTR)MoveCursor, // CUD
'[', Table1, NULL, 'C', 0, (EPTR)MoveCursor, // CUF
'[', Table1, NULL, 'D', 0, (EPTR)MoveCursor, // CUB
'[', Table1, NULL, 'G', 0, (EPTR)MoveColumn,
'[', Table3, NULL, 'K', 0, (EPTR)EraseLine, // EL/DECSEL
'[', Table3, NULL, 'J', 0, (EPTR)EraseScreen, // ED/DECSED
'[', Table1, NULL, 'P', 0, (EPTR)EraseCharacters, // DCH
'[', Table1, NULL, 'X', 0, (EPTR)EraseCharacters, // ECH (sort of)
'[', Table1, NULL, '@', 0, (EPTR)InsertCharacters, // ICH
'[', Table1, NULL, 'L', 0, (EPTR)InsertLine, // IL
'[', Table1, NULL, 'M', 0, (EPTR)ClearLine, // DL
'[', Table1, NULL, 'g', 0, (EPTR)SetTabs, // TBC
'[', Table5, NULL, 'q', 0, (EPTR)Ignore, // DECSCA
'[', Table2, NULL, 'H', 0, (EPTR)SetAbsolutePosition, // CUP
'[', Table2, NULL, 'f', 0, (EPTR)SetTopPosition, // HVP
'[', Table2, NULL, 'm', 0, (EPTR)SetAttributes, // SGR
'[', Table2, NULL, 'y', 0, (EPTR)Ignore, // DECTST
'[', Table2, NULL, 'r', 0, (EPTR)SetRegion, // DECSTBM
'[', Table1, NULL, 'S', 0, (EPTR)ScrollUp,
'[', Table1, NULL, 'T', 0, (EPTR)ScrollDown,
'[', Table1, NULL, 'E', 0, (EPTR)MoveCursorDown,
'[', Table1, NULL, 'F', 0, (EPTR)MoveCursorUp,
'[', Table8, NULL, 'z', 0, (EPTR)Ignore, // DEC private stuff
'[', Table8, NULL, '{', 0, (EPTR)Ignore // DEC private stuff
};
WORD NumCodes = sizeof(ANSICode) / sizeof(struct ControlCode);
/**********************************************************************/
struct SignalSemaphore ARexxQueueSemaphore;
struct List ARexxQueue;
BOOL ARexxRunning;
/**********************************************************************/
UWORD PenTable[16];
UBYTE TextAttributeTable[16];
WORD ForegroundPen,
BackgroundPen;
/**********************************************************************/
BOOL ChatMode;
ULONG SliderType;
ULONG CycleType;
/**********************************************************************/
struct ColourTable *NormalColourTable,
*BlinkColourTable,
*ANSIColourTable,
*EGAColourTable,
*DefaultColourTable,
*MonoColourTable;
/**********************************************************************/
UBYTE Language[80];
/**********************************************************************/
STRPTR CharCodes[256] =
{
"NUL","SOH","STX","ETX","EOT","ENQ","ACK","BEL","BS" ,"HT" ,"LF" ,"VT" ,"FF" ,"CR" ,"SO" ,"SI" ,
"DLE","DC1","DC2","DC3","DC4","NAK","SYN","ETB","CAN","EM" ,"SUB","ESC","FS" ,"GS" ,"RS" ,"US" ,
"SP" , "!" , "\"", "#" , "$" , "%" , "&" , "'" , "(" , ")" , "*" , "+" , "," , "-" , "." , "/" ,
"0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , ":" , ";" , "<" , "=" , ">" , "?" ,
"@" , "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" , "M" , "N" , "O" ,
"P" , "Q" , "R" , "S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z" , "[" , "\\", "]" , "^" , "_" ,
"`" , "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" , "i" , "j" , "k" , "l" , "m" , "n" , "o" ,
"p" , "q" , "r" , "s" , "t" , "u" , "v" , "w" , "x" , "y" , "z" , "{" , "|" , "}" , "~" ,"DEL",
"128","129","130","131","132","133","134","135","136","137","138","139","140","141","SS2","SS3",
"DCS","145","146","147","148","149","150","151","152","153","154","CSI","ST" ,"OSC","PM" ,"APC",
"NBS", "¡" , "¢" , "£" , "¤" , "¥" , "¦" , "§" , "¨" , "©" , "ª" , "«" , "¬" ,"SHY", "®" , "¯" ,
"°" , "±" , "²" , "³" , "´" , "µ" , "¶" , "·" , "¸" , "¹" , "º" , "»" , "¼" , "½" , "¾" , "¿" ,
"À" , "Á" , "Â" , "Ã" , "Ä" , "Å" , "Æ" , "Ç" , "È" , "É" , "Ê" , "Ë" , "Ì" , "Í" , "Î" , "Ï" ,
"Ð" , "Ñ" , "Ò" , "Ó" , "Ô" , "Õ" , "Ö" , "×" , "Ø" , "Ù" , "Ú" , "Û" , "Ü" , "Ý" , "Þ" , "ß" ,
"à" , "á" , "â" , "ã" , "ä" , "å" , "æ" , "ç" , "è" , "é" , "ê" , "ë" , "ì" , "í" , "î" , "ï" ,
"ð" , "ñ" , "ò" , "ó" , "ô" , "õ" , "ö" , "÷" , "ø" , "ù" , "ú" , "û" , "ü" , "ý" , "þ" , "ÿ"
};
/**********************************************************************/
struct Window *MatrixWindow;
/**********************************************************************/
VOID (* __regargs SaveRaster)(WORD First,WORD Last);
/**********************************************************************/
struct SignalSemaphore BufferTaskSemaphore;
struct TextBufferInfo *BufferInfoData;
struct SignalSemaphore ReviewTaskSemaphore;
struct TextBufferInfo *ReviewInfoData;